/*
 * Copyright (c) 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.gan.model;

import com.google.api.client.http.HttpHeaders;
import com.google.api.client.json.GenericJson;
import com.google.api.client.util.Key;
import java.util.List;

/**
 * Model definition for Gan.CcOffer.
 *
 * A credit card offer. There are many possible result fields. We provide two different views of the
 * data, or "projections." The "full" projection includes every result field. And the "summary"
 * projection, which is the default, includes a smaller subset of the fields. The fields included in
 * the summary projection are marked as such in their descriptions.
 *
 * This class models an object which will be transmitted to or from the Gan service. To reduce the
 * data transferred during service requests, you may remove members that contain data elements that
 * your application does not need.
 *
 * For a detailed explanation, see: <a href="http://code.google.com/p/google-api-java-
 * client/wiki/Json"> http://code.google.com/p/google-api-java-client/wiki/Json</a>
 *
 * @author Google, Inc.
 */
public final class CcOffer extends GenericJson {

  /**
   * For airline miles rewards, tells whether blackout dates apply to the miles.
   */
  @Key("rewardsHaveBlackoutDates")
  private Boolean rewardsHaveBlackoutDates;

  /** For airline miles rewards, tells whether blackout dates apply to the miles. */
  public Boolean getRewardsHaveBlackoutDates() {
    return rewardsHaveBlackoutDates;
  }

  /** For airline miles rewards, tells whether blackout dates apply to the miles. */
  public CcOffer setRewardsHaveBlackoutDates(Boolean rewardsHaveBlackoutDates) {
    this.rewardsHaveBlackoutDates = rewardsHaveBlackoutDates;
    return this;
  }
  /**
   * The number of units (see introPurchasePeriodUnits) that the intro purchase period lasts.
   */
  @Key("introPurchasePeriodLength")
  private Double introPurchasePeriodLength;

  /** The number of units (see introPurchasePeriodUnits) that the intro purchase period lasts. */
  public Double getIntroPurchasePeriodLength() {
    return introPurchasePeriodLength;
  }

  /** The number of units (see introPurchasePeriodUnits) that the intro purchase period lasts. */
  public CcOffer setIntroPurchasePeriodLength(Double introPurchasePeriodLength) {
    this.introPurchasePeriodLength = introPurchasePeriodLength;
    return this;
  }
  /**
   * The interest rate charged for balance transfers during the introductory period.
   */
  @Key("introBalanceTransferRate")
  private Double introBalanceTransferRate;

  /** The interest rate charged for balance transfers during the introductory period. */
  public Double getIntroBalanceTransferRate() {
    return introBalanceTransferRate;
  }

  /** The interest rate charged for balance transfers during the introductory period. */
  public CcOffer setIntroBalanceTransferRate(Double introBalanceTransferRate) {
    this.introBalanceTransferRate = introBalanceTransferRate;
    return this;
  }
  /**
   * A list of what the issuer thinks are the most important benefits of the card. Usually
   * summarizes the rewards program, if there is one. A summary field.
   */
  @Key("cardBenefits")
  private java.util.List<String> cardBenefits;

  /**
 * A list of what the issuer thinks are the most important benefits of the card. Usually summarizes
 * the rewards program, if there is one. A summary field.
 */
  public java.util.List<String> getCardBenefits() {
    return cardBenefits;
  }

  /**
 * A list of what the issuer thinks are the most important benefits of the card. Usually summarizes
 * the rewards program, if there is one. A summary field.
 */
  public CcOffer setCardBenefits(java.util.List<String> cardBenefits) {
    this.cardBenefits = cardBenefits;
    return this;
  }
  /**
   * Text describing the APR charged for balance transfers during the introductory period, and how
   * long it lasts. A summary field.
   */
  @Key("introBalanceTransferAprDisplay")
  private String introBalanceTransferAprDisplay;

  /**
 * Text describing the APR charged for balance transfers during the introductory period, and how
 * long it lasts. A summary field.
 */
  public String getIntroBalanceTransferAprDisplay() {
    return introBalanceTransferAprDisplay;
  }

  /**
 * Text describing the APR charged for balance transfers during the introductory period, and how
 * long it lasts. A summary field.
 */
  public CcOffer setIntroBalanceTransferAprDisplay(String introBalanceTransferAprDisplay) {
    this.introBalanceTransferAprDisplay = introBalanceTransferAprDisplay;
    return this;
  }
  /**
   * Name of card issuer. A summary field.
   */
  @Key("issuer")
  private String issuer;

  /** Name of card issuer. A summary field. */
  public String getIssuer() {
    return issuer;
  }

  /** Name of card issuer. A summary field. */
  public CcOffer setIssuer(String issuer) {
    this.issuer = issuer;
    return this;
  }
  /**
   * The fraction of the amount transferred that will be charged as a fee during the introductory
   * balance transfer period.
   */
  @Key("introBalanceTransferFeeRate")
  private Double introBalanceTransferFeeRate;

  /**
 * The fraction of the amount transferred that will be charged as a fee during the introductory
 * balance transfer period.
 */
  public Double getIntroBalanceTransferFeeRate() {
    return introBalanceTransferFeeRate;
  }

  /**
 * The fraction of the amount transferred that will be charged as a fee during the introductory
 * balance transfer period.
 */
  public CcOffer setIntroBalanceTransferFeeRate(Double introBalanceTransferFeeRate) {
    this.introBalanceTransferFeeRate = introBalanceTransferFeeRate;
    return this;
  }
  /**
   * Text describing the fees for cash advances. A summary field.
   */
  @Key("cashAdvanceFeeDisplay")
  private String cashAdvanceFeeDisplay;

  /** Text describing the fees for cash advances. A summary field. */
  public String getCashAdvanceFeeDisplay() {
    return cashAdvanceFeeDisplay;
  }

  /** Text describing the fees for cash advances. A summary field. */
  public CcOffer setCashAdvanceFeeDisplay(String cashAdvanceFeeDisplay) {
    this.cashAdvanceFeeDisplay = cashAdvanceFeeDisplay;
    return this;
  }
  /**
   * Text describing the annual fee, including any difference for the first year. A summary field.
   */
  @Key("annualFeeDisplay")
  private String annualFeeDisplay;

  /**
 * Text describing the annual fee, including any difference for the first year. A summary field.
 */
  public String getAnnualFeeDisplay() {
    return annualFeeDisplay;
  }

  /**
 * Text describing the annual fee, including any difference for the first year. A summary field.
 */
  public CcOffer setAnnualFeeDisplay(String annualFeeDisplay) {
    this.annualFeeDisplay = annualFeeDisplay;
    return this;
  }
  /**
   * Text describing how much missing the grace period will cost.
   */
  @Key("minimumFinanceCharge")
  private String minimumFinanceCharge;

  /** Text describing how much missing the grace period will cost. */
  public String getMinimumFinanceCharge() {
    return minimumFinanceCharge;
  }

  /** Text describing how much missing the grace period will cost. */
  public CcOffer setMinimumFinanceCharge(String minimumFinanceCharge) {
    this.minimumFinanceCharge = minimumFinanceCharge;
    return this;
  }
  /**
   * Text describing the balance transfer fee, if balance transfers are allowed. A summary field.
   */
  @Key("balanceTransferFeeDisplay")
  private String balanceTransferFeeDisplay;

  /** Text describing the balance transfer fee, if balance transfers are allowed. A summary field. */
  public String getBalanceTransferFeeDisplay() {
    return balanceTransferFeeDisplay;
  }

  /** Text describing the balance transfer fee, if balance transfers are allowed. A summary field. */
  public CcOffer setBalanceTransferFeeDisplay(String balanceTransferFeeDisplay) {
    this.balanceTransferFeeDisplay = balanceTransferFeeDisplay;
    return this;
  }
  /**
   * The link to the issuer's page for this card. A summary field.
   */
  @Key("landingPageUrl")
  private String landingPageUrl;

  /** The link to the issuer's page for this card. A summary field. */
  public String getLandingPageUrl() {
    return landingPageUrl;
  }

  /** The link to the issuer's page for this card. A summary field. */
  public CcOffer setLandingPageUrl(String landingPageUrl) {
    this.landingPageUrl = landingPageUrl;
    return this;
  }
  /**
   * The introductory interest rate for purchases. Expressed as an absolute number, not as a
   * percentage.
   */
  @Key("introPurchaseRate")
  private Double introPurchaseRate;

  /**
 * The introductory interest rate for purchases. Expressed as an absolute number, not as a
 * percentage.
 */
  public Double getIntroPurchaseRate() {
    return introPurchaseRate;
  }

  /**
 * The introductory interest rate for purchases. Expressed as an absolute number, not as a
 * percentage.
 */
  public CcOffer setIntroPurchaseRate(Double introPurchaseRate) {
    this.introPurchaseRate = introPurchaseRate;
    return this;
  }
  /**
   * Text describing the APR for cash advances, if cash advances are allowed. A summary field.
   */
  @Key("cashAdvanceAprDisplay")
  private String cashAdvanceAprDisplay;

  /** Text describing the APR for cash advances, if cash advances are allowed. A summary field. */
  public String getCashAdvanceAprDisplay() {
    return cashAdvanceAprDisplay;
  }

  /** Text describing the APR for cash advances, if cash advances are allowed. A summary field. */
  public CcOffer setCashAdvanceAprDisplay(String cashAdvanceAprDisplay) {
    this.cashAdvanceAprDisplay = cashAdvanceAprDisplay;
    return this;
  }
  /**
   * The highest interest rate the issuer may charge for cash advances. Expressed as an absolute
   * number, not as a percentage.
   */
  @Key("maxCashAdvanceRate")
  private Double maxCashAdvanceRate;

  /**
 * The highest interest rate the issuer may charge for cash advances. Expressed as an absolute
 * number, not as a percentage.
 */
  public Double getMaxCashAdvanceRate() {
    return maxCashAdvanceRate;
  }

  /**
 * The highest interest rate the issuer may charge for cash advances. Expressed as an absolute
 * number, not as a percentage.
 */
  public CcOffer setMaxCashAdvanceRate(Double maxCashAdvanceRate) {
    this.maxCashAdvanceRate = maxCashAdvanceRate;
    return this;
  }
  /**
   * The annual fee for the first year, if different from the ongoing fee. Optional.
   */
  @Key("firstYearAnnualFee")
  private Double firstYearAnnualFee;

  /** The annual fee for the first year, if different from the ongoing fee. Optional. */
  public Double getFirstYearAnnualFee() {
    return firstYearAnnualFee;
  }

  /** The annual fee for the first year, if different from the ongoing fee. Optional. */
  public CcOffer setFirstYearAnnualFee(Double firstYearAnnualFee) {
    this.firstYearAnnualFee = firstYearAnnualFee;
    return this;
  }
  /**
   * The duration unit for the introductory period for balance transfers. For example, Days or
   * Billing Cycles.
   */
  @Key("introBalanceTransferPeriodUnits")
  private String introBalanceTransferPeriodUnits;

  /**
 * The duration unit for the introductory period for balance transfers. For example, Days or Billing
 * Cycles.
 */
  public String getIntroBalanceTransferPeriodUnits() {
    return introBalanceTransferPeriodUnits;
  }

  /**
 * The duration unit for the introductory period for balance transfers. For example, Days or Billing
 * Cycles.
 */
  public CcOffer setIntroBalanceTransferPeriodUnits(String introBalanceTransferPeriodUnits) {
    this.introBalanceTransferPeriodUnits = introBalanceTransferPeriodUnits;
    return this;
  }
  /**
   * How often variable rates are updated.
   */
  @Key("variableRatesUpdateFrequency")
  private String variableRatesUpdateFrequency;

  /** How often variable rates are updated. */
  public String getVariableRatesUpdateFrequency() {
    return variableRatesUpdateFrequency;
  }

  /** How often variable rates are updated. */
  public CcOffer setVariableRatesUpdateFrequency(String variableRatesUpdateFrequency) {
    this.variableRatesUpdateFrequency = variableRatesUpdateFrequency;
    return this;
  }
  /**
   * Fee for exceeding the card's charge limit.
   */
  @Key("overLimitFee")
  private String overLimitFee;

  /** Fee for exceeding the card's charge limit. */
  public String getOverLimitFee() {
    return overLimitFee;
  }

  /** Fee for exceeding the card's charge limit. */
  public CcOffer setOverLimitFee(String overLimitFee) {
    this.overLimitFee = overLimitFee;
    return this;
  }
  /**
   * Whether accumulated rewards ever expire.
   */
  @Key("rewardsExpire")
  private Boolean rewardsExpire;

  /** Whether accumulated rewards ever expire. */
  public Boolean getRewardsExpire() {
    return rewardsExpire;
  }

  /** Whether accumulated rewards ever expire. */
  public CcOffer setRewardsExpire(Boolean rewardsExpire) {
    this.rewardsExpire = rewardsExpire;
    return this;
  }
  /**
   * More marketing copy about the card's benefits. A summary field.
   */
  @Key("additionalCardBenefits")
  private java.util.List<String> additionalCardBenefits;

  /** More marketing copy about the card's benefits. A summary field. */
  public java.util.List<String> getAdditionalCardBenefits() {
    return additionalCardBenefits;
  }

  /** More marketing copy about the card's benefits. A summary field. */
  public CcOffer setAdditionalCardBenefits(java.util.List<String> additionalCardBenefits) {
    this.additionalCardBenefits = additionalCardBenefits;
    return this;
  }
  /**
   * The youngest a recipient of this card may be.
   */
  @Key("ageMinimum")
  private Double ageMinimum;

  /** The youngest a recipient of this card may be. */
  public Double getAgeMinimum() {
    return ageMinimum;
  }

  /** The youngest a recipient of this card may be. */
  public CcOffer setAgeMinimum(Double ageMinimum) {
    this.ageMinimum = ageMinimum;
    return this;
  }
  /**
   * Text describing the APR charged for balance transfers. A summary field.
   */
  @Key("balanceTransferAprDisplay")
  private String balanceTransferAprDisplay;

  /** Text describing the APR charged for balance transfers. A summary field. */
  public String getBalanceTransferAprDisplay() {
    return balanceTransferAprDisplay;
  }

  /** Text describing the APR charged for balance transfers. A summary field. */
  public CcOffer setBalanceTransferAprDisplay(String balanceTransferAprDisplay) {
    this.balanceTransferAprDisplay = balanceTransferAprDisplay;
    return this;
  }
  /**
   * Possible durations (numbers of units) that the introductory period for balance transfers may
   * last.
   */
  @Key("introBalanceTransferPeriodLength")
  private Double introBalanceTransferPeriodLength;

  /**
 * Possible durations (numbers of units) that the introductory period for balance transfers may
 * last.
 */
  public Double getIntroBalanceTransferPeriodLength() {
    return introBalanceTransferPeriodLength;
  }

  /**
 * Possible durations (numbers of units) that the introductory period for balance transfers may
 * last.
 */
  public CcOffer setIntroBalanceTransferPeriodLength(Double introBalanceTransferPeriodLength) {
    this.introBalanceTransferPeriodLength = introBalanceTransferPeriodLength;
    return this;
  }
  /**
   * Which network (eg Visa) the card belongs to. A summary field.
   */
  @Key("network")
  private String network;

  /** Which network (eg Visa) the card belongs to. A summary field. */
  public String getNetwork() {
    return network;
  }

  /** Which network (eg Visa) the card belongs to. A summary field. */
  public CcOffer setNetwork(String network) {
    this.network = network;
    return this;
  }
  /**
   * Fixed or variable.
   */
  @Key("introPurchaseRateType")
  private String introPurchaseRateType;

  /** Fixed or variable. */
  public String getIntroPurchaseRateType() {
    return introPurchaseRateType;
  }

  /** Fixed or variable. */
  public CcOffer setIntroPurchaseRateType(String introPurchaseRateType) {
    this.introPurchaseRateType = introPurchaseRateType;
    return this;
  }
  /**
   * Text describing the intro APR for purchases, and how long it lasts. A summary field.
   */
  @Key("introAprDisplay")
  private String introAprDisplay;

  /** Text describing the intro APR for purchases, and how long it lasts. A summary field. */
  public String getIntroAprDisplay() {
    return introAprDisplay;
  }

  /** Text describing the intro APR for purchases, and how long it lasts. A summary field. */
  public CcOffer setIntroAprDisplay(String introAprDisplay) {
    this.introAprDisplay = introAprDisplay;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("flightAccidentInsurance")
  private String flightAccidentInsurance;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getFlightAccidentInsurance() {
    return flightAccidentInsurance;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setFlightAccidentInsurance(String flightAccidentInsurance) {
    this.flightAccidentInsurance = flightAccidentInsurance;
    return this;
  }
  /**
   * The largest number of units you may accumulate in a year.
   */
  @Key("annualRewardMaximum")
  private Double annualRewardMaximum;

  /** The largest number of units you may accumulate in a year. */
  public Double getAnnualRewardMaximum() {
    return annualRewardMaximum;
  }

  /** The largest number of units you may accumulate in a year. */
  public CcOffer setAnnualRewardMaximum(Double annualRewardMaximum) {
    this.annualRewardMaximum = annualRewardMaximum;
    return this;
  }
  /**
   * A notice that, if present, is referenced via an asterisk by many of the other summary fields.
   * If this field is present, it will always start with an asterisk ("*"), and must be prominently
   * displayed with the offer. A summary field.
   */
  @Key("disclaimer")
  private String disclaimer;

  /**
 * A notice that, if present, is referenced via an asterisk by many of the other summary fields. If
 * this field is present, it will always start with an asterisk ("*"), and must be prominently
 * displayed with the offer. A summary field.
 */
  public String getDisclaimer() {
    return disclaimer;
  }

  /**
 * A notice that, if present, is referenced via an asterisk by many of the other summary fields. If
 * this field is present, it will always start with an asterisk ("*"), and must be prominently
 * displayed with the offer. A summary field.
 */
  public CcOffer setDisclaimer(String disclaimer) {
    this.disclaimer = disclaimer;
    return this;
  }
  /**
   * The low end for credit limits the issuer imposes on recipients of this card.
   */
  @Key("creditLimitMin")
  private Double creditLimitMin;

  /** The low end for credit limits the issuer imposes on recipients of this card. */
  public Double getCreditLimitMin() {
    return creditLimitMin;
  }

  /** The low end for credit limits the issuer imposes on recipients of this card. */
  public CcOffer setCreditLimitMin(Double creditLimitMin) {
    this.creditLimitMin = creditLimitMin;
    return this;
  }
  /**
   * The high end for credit limits the issuer imposes on recipients of this card.
   */
  @Key("creditLimitMax")
  private Double creditLimitMax;

  /** The high end for credit limits the issuer imposes on recipients of this card. */
  public Double getCreditLimitMax() {
    return creditLimitMax;
  }

  /** The high end for credit limits the issuer imposes on recipients of this card. */
  public CcOffer setCreditLimitMax(Double creditLimitMax) {
    this.creditLimitMax = creditLimitMax;
    return this;
  }
  /**
   * Text describing the grace period before finance charges apply. A summary field.
   */
  @Key("gracePeriodDisplay")
  private String gracePeriodDisplay;

  /** Text describing the grace period before finance charges apply. A summary field. */
  public String getGracePeriodDisplay() {
    return gracePeriodDisplay;
  }

  /** Text describing the grace period before finance charges apply. A summary field. */
  public CcOffer setGracePeriodDisplay(String gracePeriodDisplay) {
    this.gracePeriodDisplay = gracePeriodDisplay;
    return this;
  }
  /**
   * The dollar amount that will be charged per advance.
   */
  @Key("cashAdvanceFeeAmount")
  private Double cashAdvanceFeeAmount;

  /** The dollar amount that will be charged per advance. */
  public Double getCashAdvanceFeeAmount() {
    return cashAdvanceFeeAmount;
  }

  /** The dollar amount that will be charged per advance. */
  public CcOffer setCashAdvanceFeeAmount(Double cashAdvanceFeeAmount) {
    this.cashAdvanceFeeAmount = cashAdvanceFeeAmount;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("travelInsurance")
  private String travelInsurance;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getTravelInsurance() {
    return travelInsurance;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setTravelInsurance(String travelInsurance) {
    this.travelInsurance = travelInsurance;
    return this;
  }
  /**
   * Whether this card is only available to existing customers of the issuer.
   */
  @Key("existingCustomerOnly")
  private Boolean existingCustomerOnly;

  /** Whether this card is only available to existing customers of the issuer. */
  public Boolean getExistingCustomerOnly() {
    return existingCustomerOnly;
  }

  /** Whether this card is only available to existing customers of the issuer. */
  public CcOffer setExistingCustomerOnly(Boolean existingCustomerOnly) {
    this.existingCustomerOnly = existingCustomerOnly;
    return this;
  }
  /**
   * Fee for setting up the card.
   */
  @Key("initialSetupAndProcessingFee")
  private String initialSetupAndProcessingFee;

  /** Fee for setting up the card. */
  public String getInitialSetupAndProcessingFee() {
    return initialSetupAndProcessingFee;
  }

  /** Fee for setting up the card. */
  public CcOffer setInitialSetupAndProcessingFee(String initialSetupAndProcessingFee) {
    this.initialSetupAndProcessingFee = initialSetupAndProcessingFee;
    return this;
  }
  /**
   * The Google Affiliate Network ID of the advertiser making this offer.
   */
  @Key("issuerId")
  private String issuerId;

  /** The Google Affiliate Network ID of the advertiser making this offer. */
  public String getIssuerId() {
    return issuerId;
  }

  /** The Google Affiliate Network ID of the advertiser making this offer. */
  public CcOffer setIssuerId(String issuerId) {
    this.issuerId = issuerId;
    return this;
  }
  /**
   * For cards with rewards programs, the unit of reward. For example, miles, cash back, points.
   */
  @Key("rewardUnit")
  private String rewardUnit;

  /** For cards with rewards programs, the unit of reward. For example, miles, cash back, points. */
  public String getRewardUnit() {
    return rewardUnit;
  }

  /** For cards with rewards programs, the unit of reward. For example, miles, cash back, points. */
  public CcOffer setRewardUnit(String rewardUnit) {
    this.rewardUnit = rewardUnit;
    return this;
  }
  /**
   * Categories in which the issuer does not wish the card to be displayed. A summary field.
   */
  @Key("prohibitedCategories")
  private java.util.List<String> prohibitedCategories;

  /** Categories in which the issuer does not wish the card to be displayed. A summary field. */
  public java.util.List<String> getProhibitedCategories() {
    return prohibitedCategories;
  }

  /** Categories in which the issuer does not wish the card to be displayed. A summary field. */
  public CcOffer setProhibitedCategories(java.util.List<String> prohibitedCategories) {
    this.prohibitedCategories = prohibitedCategories;
    return this;
  }
  /**
   * Fees for defaulting on your payments.
   */
  @Key("defaultFees")
  private java.util.List<CcOfferDefaultFees> defaultFees;

  /** Fees for defaulting on your payments. */
  public java.util.List<CcOfferDefaultFees> getDefaultFees() {
    return defaultFees;
  }

  /** Fees for defaulting on your payments. */
  public CcOffer setDefaultFees(java.util.List<CcOfferDefaultFees> defaultFees) {
    this.defaultFees = defaultFees;
    return this;
  }
  /**
   * A time period description, eg Days or Billing Cycles.
   */
  @Key("introPurchasePeriodUnits")
  private String introPurchasePeriodUnits;

  /** A time period description, eg Days or Billing Cycles. */
  public String getIntroPurchasePeriodUnits() {
    return introPurchasePeriodUnits;
  }

  /** A time period description, eg Days or Billing Cycles. */
  public CcOffer setIntroPurchasePeriodUnits(String introPurchasePeriodUnits) {
    this.introPurchasePeriodUnits = introPurchasePeriodUnits;
    return this;
  }
  /**
   * The link to ping to register a click on this offer. A summary field.
   */
  @Key("trackingUrl")
  private String trackingUrl;

  /** The link to ping to register a click on this offer. A summary field. */
  public String getTrackingUrl() {
    return trackingUrl;
  }

  /** The link to ping to register a click on this offer. A summary field. */
  public CcOffer setTrackingUrl(String trackingUrl) {
    this.trackingUrl = trackingUrl;
    return this;
  }
  /**
   * Text describing how much a late payment will cost, eg "up to $35." A summary field.
   */
  @Key("latePaymentFee")
  private String latePaymentFee;

  /** Text describing how much a late payment will cost, eg "up to $35." A summary field. */
  public String getLatePaymentFee() {
    return latePaymentFee;
  }

  /** Text describing how much a late payment will cost, eg "up to $35." A summary field. */
  public CcOffer setLatePaymentFee(String latePaymentFee) {
    this.latePaymentFee = latePaymentFee;
    return this;
  }
  /**
   * Fee for requesting a copy of your statement.
   */
  @Key("statementCopyFee")
  private String statementCopyFee;

  /** Fee for requesting a copy of your statement. */
  public String getStatementCopyFee() {
    return statementCopyFee;
  }

  /** Fee for requesting a copy of your statement. */
  public CcOffer setStatementCopyFee(String statementCopyFee) {
    this.statementCopyFee = statementCopyFee;
    return this;
  }
  /**
   * When variable rates were last updated.
   */
  @Key("variableRatesLastUpdated")
  private String variableRatesLastUpdated;

  /** When variable rates were last updated. */
  public String getVariableRatesLastUpdated() {
    return variableRatesLastUpdated;
  }

  /** When variable rates were last updated. */
  public CcOffer setVariableRatesLastUpdated(String variableRatesLastUpdated) {
    this.variableRatesLastUpdated = variableRatesLastUpdated;
    return this;
  }
  /**
   * The lowest interest rate the issuer may charge for balance transfers. Expressed as an absolute
   * number, not as a percentage.
   */
  @Key("minBalanceTransferRate")
  private Double minBalanceTransferRate;

  /**
 * The lowest interest rate the issuer may charge for balance transfers. Expressed as an absolute
 * number, not as a percentage.
 */
  public Double getMinBalanceTransferRate() {
    return minBalanceTransferRate;
  }

  /**
 * The lowest interest rate the issuer may charge for balance transfers. Expressed as an absolute
 * number, not as a percentage.
 */
  public CcOffer setMinBalanceTransferRate(Double minBalanceTransferRate) {
    this.minBalanceTransferRate = minBalanceTransferRate;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("emergencyInsurance")
  private String emergencyInsurance;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getEmergencyInsurance() {
    return emergencyInsurance;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setEmergencyInsurance(String emergencyInsurance) {
    this.emergencyInsurance = emergencyInsurance;
    return this;
  }
  /**
   * When the intro purchase period ends, for cards with fixed end dates.
   */
  @Key("introPurchasePeriodEndDate")
  private String introPurchasePeriodEndDate;

  /** When the intro purchase period ends, for cards with fixed end dates. */
  public String getIntroPurchasePeriodEndDate() {
    return introPurchasePeriodEndDate;
  }

  /** When the intro purchase period ends, for cards with fixed end dates. */
  public CcOffer setIntroPurchasePeriodEndDate(String introPurchasePeriodEndDate) {
    this.introPurchasePeriodEndDate = introPurchasePeriodEndDate;
    return this;
  }
  /**
   * The issuer's name for the card, including any trademark or service mark designators. A summary
   * field.
   */
  @Key("cardName")
  private String cardName;

  /**
 * The issuer's name for the card, including any trademark or service mark designators. A summary
 * field.
 */
  public String getCardName() {
    return cardName;
  }

  /**
 * The issuer's name for the card, including any trademark or service mark designators. A summary
 * field.
 */
  public CcOffer setCardName(String cardName) {
    this.cardName = cardName;
    return this;
  }
  /**
   * Text describing the fee for a payment that doesn't clear. A summary field.
   */
  @Key("returnedPaymentFee")
  private String returnedPaymentFee;

  /** Text describing the fee for a payment that doesn't clear. A summary field. */
  public String getReturnedPaymentFee() {
    return returnedPaymentFee;
  }

  /** Text describing the fee for a payment that doesn't clear. A summary field. */
  public CcOffer setReturnedPaymentFee(String returnedPaymentFee) {
    this.returnedPaymentFee = returnedPaymentFee;
    return this;
  }
  /**
   * Text describing additional restrictions on cash advances.
   */
  @Key("cashAdvanceAdditionalDetails")
  private String cashAdvanceAdditionalDetails;

  /** Text describing additional restrictions on cash advances. */
  public String getCashAdvanceAdditionalDetails() {
    return cashAdvanceAdditionalDetails;
  }

  /** Text describing additional restrictions on cash advances. */
  public CcOffer setCashAdvanceAdditionalDetails(String cashAdvanceAdditionalDetails) {
    this.cashAdvanceAdditionalDetails = cashAdvanceAdditionalDetails;
    return this;
  }
  /**
   * The maximum amount that may be advanced.
   */
  @Key("cashAdvanceLimit")
  private Double cashAdvanceLimit;

  /** The maximum amount that may be advanced. */
  public Double getCashAdvanceLimit() {
    return cashAdvanceLimit;
  }

  /** The maximum amount that may be advanced. */
  public CcOffer setCashAdvanceLimit(Double cashAdvanceLimit) {
    this.cashAdvanceLimit = cashAdvanceLimit;
    return this;
  }
  /**
   * The fraction of the amount transferred that will be charged as a fee.
   */
  @Key("balanceTransferFeeRate")
  private Double balanceTransferFeeRate;

  /** The fraction of the amount transferred that will be charged as a fee. */
  public Double getBalanceTransferFeeRate() {
    return balanceTransferFeeRate;
  }

  /** The fraction of the amount transferred that will be charged as a fee. */
  public CcOffer setBalanceTransferFeeRate(Double balanceTransferFeeRate) {
    this.balanceTransferFeeRate = balanceTransferFeeRate;
    return this;
  }
  /**
   * Fixed or variable.
   */
  @Key("balanceTransferRateType")
  private String balanceTransferRateType;

  /** Fixed or variable. */
  public String getBalanceTransferRateType() {
    return balanceTransferRateType;
  }

  /** Fixed or variable. */
  public CcOffer setBalanceTransferRateType(String balanceTransferRateType) {
    this.balanceTransferRateType = balanceTransferRateType;
    return this;
  }
  /**
   * For cards with rewards programs, detailed rules about how the program works.
   */
  @Key("rewards")
  private java.util.List<CcOfferRewards> rewards;

  /** For cards with rewards programs, detailed rules about how the program works. */
  public java.util.List<CcOfferRewards> getRewards() {
    return rewards;
  }

  /** For cards with rewards programs, detailed rules about how the program works. */
  public CcOffer setRewards(java.util.List<CcOfferRewards> rewards) {
    this.rewards = rewards;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("extendedWarranty")
  private String extendedWarranty;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getExtendedWarranty() {
    return extendedWarranty;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setExtendedWarranty(String extendedWarranty) {
    this.extendedWarranty = extendedWarranty;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("carRentalInsurance")
  private String carRentalInsurance;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getCarRentalInsurance() {
    return carRentalInsurance;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setCarRentalInsurance(String carRentalInsurance) {
    this.carRentalInsurance = carRentalInsurance;
    return this;
  }
  /**
   * The fraction of the amount advanced that will be charged as a fee.
   */
  @Key("cashAdvanceFeeRate")
  private Double cashAdvanceFeeRate;

  /** The fraction of the amount advanced that will be charged as a fee. */
  public Double getCashAdvanceFeeRate() {
    return cashAdvanceFeeRate;
  }

  /** The fraction of the amount advanced that will be charged as a fee. */
  public CcOffer setCashAdvanceFeeRate(Double cashAdvanceFeeRate) {
    this.cashAdvanceFeeRate = cashAdvanceFeeRate;
    return this;
  }
  /**
   * The company that redeems the rewards, if different from the issuer.
   */
  @Key("rewardPartner")
  private String rewardPartner;

  /** The company that redeems the rewards, if different from the issuer. */
  public String getRewardPartner() {
    return rewardPartner;
  }

  /** The company that redeems the rewards, if different from the issuer. */
  public CcOffer setRewardPartner(String rewardPartner) {
    this.rewardPartner = rewardPartner;
    return this;
  }
  /**
   * Fee for each transaction involving a foreign currency.
   */
  @Key("foreignCurrencyTransactionFee")
  private String foreignCurrencyTransactionFee;

  /** Fee for each transaction involving a foreign currency. */
  public String getForeignCurrencyTransactionFee() {
    return foreignCurrencyTransactionFee;
  }

  /** Fee for each transaction involving a foreign currency. */
  public CcOffer setForeignCurrencyTransactionFee(String foreignCurrencyTransactionFee) {
    this.foreignCurrencyTransactionFee = foreignCurrencyTransactionFee;
    return this;
  }
  /**
   * The kind for one credit card offer. A summary field.
   */
  @Key("kind")
  private String kind;

  /** The kind for one credit card offer. A summary field. */
  public String getKind() {
    return kind;
  }

  /** The kind for one credit card offer. A summary field. */
  public CcOffer setKind(String kind) {
    this.kind = kind;
    return this;
  }
  /**
   * The dollar amount that will be charged per transfer during the introductory balance transfer
   * period.
   */
  @Key("introBalanceTransferFeeAmount")
  private Double introBalanceTransferFeeAmount;

  /**
 * The dollar amount that will be charged per transfer during the introductory balance transfer
 * period.
 */
  public Double getIntroBalanceTransferFeeAmount() {
    return introBalanceTransferFeeAmount;
  }

  /**
 * The dollar amount that will be charged per transfer during the introductory balance transfer
 * period.
 */
  public CcOffer setIntroBalanceTransferFeeAmount(Double introBalanceTransferFeeAmount) {
    this.introBalanceTransferFeeAmount = introBalanceTransferFeeAmount;
    return this;
  }
  /**
   * Text describing the credit ratings required for recipients of this card, for example
   * "Excellent/Good." A summary field.
   */
  @Key("creditRatingDisplay")
  private String creditRatingDisplay;

  /**
 * Text describing the credit ratings required for recipients of this card, for example
 * "Excellent/Good." A summary field.
 */
  public String getCreditRatingDisplay() {
    return creditRatingDisplay;
  }

  /**
 * Text describing the credit ratings required for recipients of this card, for example
 * "Excellent/Good." A summary field.
 */
  public CcOffer setCreditRatingDisplay(String creditRatingDisplay) {
    this.creditRatingDisplay = creditRatingDisplay;
    return this;
  }
  /**
   * Any extra fees levied on card holders.
   */
  @Key("additionalCardHolderFee")
  private String additionalCardHolderFee;

  /** Any extra fees levied on card holders. */
  public String getAdditionalCardHolderFee() {
    return additionalCardHolderFee;
  }

  /** Any extra fees levied on card holders. */
  public CcOffer setAdditionalCardHolderFee(String additionalCardHolderFee) {
    this.additionalCardHolderFee = additionalCardHolderFee;
    return this;
  }
  /**
   * Fixed or variable.
   */
  @Key("purchaseRateType")
  private String purchaseRateType;

  /** Fixed or variable. */
  public String getPurchaseRateType() {
    return purchaseRateType;
  }

  /** Fixed or variable. */
  public CcOffer setPurchaseRateType(String purchaseRateType) {
    this.purchaseRateType = purchaseRateType;
    return this;
  }
  /**
   * Fixed or variable.
   */
  @Key("cashAdvanceRateType")
  private String cashAdvanceRateType;

  /** Fixed or variable. */
  public String getCashAdvanceRateType() {
    return cashAdvanceRateType;
  }

  /** Fixed or variable. */
  public CcOffer setCashAdvanceRateType(String cashAdvanceRateType) {
    this.cashAdvanceRateType = cashAdvanceRateType;
    return this;
  }
  /**
   * For cards with rewards programs, extra circumstances whereby additional rewards may be granted.
   */
  @Key("bonusRewards")
  private java.util.List<CcOfferBonusRewards> bonusRewards;

  /**
 * For cards with rewards programs, extra circumstances whereby additional rewards may be granted.
 */
  public java.util.List<CcOfferBonusRewards> getBonusRewards() {
    return bonusRewards;
  }

  /**
 * For cards with rewards programs, extra circumstances whereby additional rewards may be granted.
 */
  public CcOffer setBonusRewards(java.util.List<CcOfferBonusRewards> bonusRewards) {
    this.bonusRewards = bonusRewards;
    return this;
  }
  /**
   * The largest balance amount that may be transferred.
   */
  @Key("balanceTransferLimit")
  private Double balanceTransferLimit;

  /** The largest balance amount that may be transferred. */
  public Double getBalanceTransferLimit() {
    return balanceTransferLimit;
  }

  /** The largest balance amount that may be transferred. */
  public CcOffer setBalanceTransferLimit(Double balanceTransferLimit) {
    this.balanceTransferLimit = balanceTransferLimit;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("luggageInsurance")
  private String luggageInsurance;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getLuggageInsurance() {
    return luggageInsurance;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setLuggageInsurance(String luggageInsurance) {
    this.luggageInsurance = luggageInsurance;
    return this;
  }
  /**
   * The lowest interest rate the issuer may charge for cash advances. Expressed as an absolute
   * number, not as a percentage.
   */
  @Key("minCashAdvanceRate")
  private Double minCashAdvanceRate;

  /**
 * The lowest interest rate the issuer may charge for cash advances. Expressed as an absolute
 * number, not as a percentage.
 */
  public Double getMinCashAdvanceRate() {
    return minCashAdvanceRate;
  }

  /**
 * The lowest interest rate the issuer may charge for cash advances. Expressed as an absolute
 * number, not as a percentage.
 */
  public CcOffer setMinCashAdvanceRate(Double minCashAdvanceRate) {
    this.minCashAdvanceRate = minCashAdvanceRate;
    return this;
  }
  /**
   * This offer's ID. A summary field.
   */
  @Key("offerId")
  private String offerId;

  /** This offer's ID. A summary field. */
  public String getOfferId() {
    return offerId;
  }

  /** This offer's ID. A summary field. */
  public CcOffer setOfferId(String offerId) {
    this.offerId = offerId;
    return this;
  }
  /**
   * The lowest interest rate the issuer charges on this card. Expressed as an absolute number, not
   * as a percentage.
   */
  @Key("minPurchaseRate")
  private Double minPurchaseRate;

  /**
 * The lowest interest rate the issuer charges on this card. Expressed as an absolute number, not as
 * a percentage.
 */
  public Double getMinPurchaseRate() {
    return minPurchaseRate;
  }

  /**
 * The lowest interest rate the issuer charges on this card. Expressed as an absolute number, not as
 * a percentage.
 */
  public CcOffer setMinPurchaseRate(Double minPurchaseRate) {
    this.minPurchaseRate = minPurchaseRate;
    return this;
  }
  /**
   * Whether a cash reward program lets you get cash back sooner than end of year or other longish
   * period.
   */
  @Key("offersImmediateCashReward")
  private Boolean offersImmediateCashReward;

  /**
 * Whether a cash reward program lets you get cash back sooner than end of year or other longish
 * period.
 */
  public Boolean getOffersImmediateCashReward() {
    return offersImmediateCashReward;
  }

  /**
 * Whether a cash reward program lets you get cash back sooner than end of year or other longish
 * period.
 */
  public CcOffer setOffersImmediateCashReward(Boolean offersImmediateCashReward) {
    this.offersImmediateCashReward = offersImmediateCashReward;
    return this;
  }
  /**
   * If you get coverage when you use the card for the given activity, this field describes it.
   */
  @Key("fraudLiability")
  private String fraudLiability;

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public String getFraudLiability() {
    return fraudLiability;
  }

  /** If you get coverage when you use the card for the given activity, this field describes it. */
  public CcOffer setFraudLiability(String fraudLiability) {
    this.fraudLiability = fraudLiability;
    return this;
  }
  /**
   * What kind of credit card this is, for example secured or unsecured.
   */
  @Key("cardType")
  private String cardType;

  /** What kind of credit card this is, for example secured or unsecured. */
  public String getCardType() {
    return cardType;
  }

  /** What kind of credit card this is, for example secured or unsecured. */
  public CcOffer setCardType(String cardType) {
    this.cardType = cardType;
    return this;
  }
  /**
   * Possible categories for this card, eg "Low Interest" or "Good." A summary field.
   */
  @Key("approvedCategories")
  private java.util.List<String> approvedCategories;

  /** Possible categories for this card, eg "Low Interest" or "Good." A summary field. */
  public java.util.List<String> getApprovedCategories() {
    return approvedCategories;
  }

  /** Possible categories for this card, eg "Low Interest" or "Good." A summary field. */
  public CcOffer setApprovedCategories(java.util.List<String> approvedCategories) {
    this.approvedCategories = approvedCategories;
    return this;
  }
  /**
   * The ongoing annual fee, in dollars.
   */
  @Key("annualFee")
  private Double annualFee;

  /** The ongoing annual fee, in dollars. */
  public Double getAnnualFee() {
    return annualFee;
  }

  /** The ongoing annual fee, in dollars. */
  public CcOffer setAnnualFee(Double annualFee) {
    this.annualFee = annualFee;
    return this;
  }
  /**
   * The highest interest rate the issuer may charge for balance transfers. Expressed as an absolute
   * number, not as a percentage.
   */
  @Key("maxBalanceTransferRate")
  private Double maxBalanceTransferRate;

  /**
 * The highest interest rate the issuer may charge for balance transfers. Expressed as an absolute
 * number, not as a percentage.
 */
  public Double getMaxBalanceTransferRate() {
    return maxBalanceTransferRate;
  }

  /**
 * The highest interest rate the issuer may charge for balance transfers. Expressed as an absolute
 * number, not as a percentage.
 */
  public CcOffer setMaxBalanceTransferRate(Double maxBalanceTransferRate) {
    this.maxBalanceTransferRate = maxBalanceTransferRate;
    return this;
  }
  /**
   * The highest interest rate the issuer charges on this card. Expressed as an absolute number, not
   * as a percentage.
   */
  @Key("maxPurchaseRate")
  private Double maxPurchaseRate;

  /**
 * The highest interest rate the issuer charges on this card. Expressed as an absolute number, not
 * as a percentage.
 */
  public Double getMaxPurchaseRate() {
    return maxPurchaseRate;
  }

  /**
 * The highest interest rate the issuer charges on this card. Expressed as an absolute number, not
 * as a percentage.
 */
  public CcOffer setMaxPurchaseRate(Double maxPurchaseRate) {
    this.maxPurchaseRate = maxPurchaseRate;
    return this;
  }
  /**
   * The generic link to the issuer's site.
   */
  @Key("issuerWebsite")
  private String issuerWebsite;

  /** The generic link to the issuer's site. */
  public String getIssuerWebsite() {
    return issuerWebsite;
  }

  /** The generic link to the issuer's site. */
  public CcOffer setIssuerWebsite(String issuerWebsite) {
    this.issuerWebsite = issuerWebsite;
    return this;
  }
  /**
   * Fixed or variable.
   */
  @Key("introBalanceTransferRateType")
  private String introBalanceTransferRateType;

  /** Fixed or variable. */
  public String getIntroBalanceTransferRateType() {
    return introBalanceTransferRateType;
  }

  /** Fixed or variable. */
  public CcOffer setIntroBalanceTransferRateType(String introBalanceTransferRateType) {
    this.introBalanceTransferRateType = introBalanceTransferRateType;
    return this;
  }
  /**
   * Text describing the purchase APR. A summary field.
   */
  @Key("aprDisplay")
  private String aprDisplay;

  /** Text describing the purchase APR. A summary field. */
  public String getAprDisplay() {
    return aprDisplay;
  }

  /** Text describing the purchase APR. A summary field. */
  public CcOffer setAprDisplay(String aprDisplay) {
    this.aprDisplay = aprDisplay;
    return this;
  }
  /**
   * The link to the image of the card that is shown on Connect Commerce. A summary field.
   */
  @Key("imageUrl")
  private String imageUrl;

  /** The link to the image of the card that is shown on Connect Commerce. A summary field. */
  public String getImageUrl() {
    return imageUrl;
  }

  /** The link to the image of the card that is shown on Connect Commerce. A summary field. */
  public CcOffer setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
    return this;
  }
  /**
   * Text describing the details of the age minimum restriction.
   */
  @Key("ageMinimumDetails")
  private String ageMinimumDetails;

  /** Text describing the details of the age minimum restriction. */
  public String getAgeMinimumDetails() {
    return ageMinimumDetails;
  }

  /** Text describing the details of the age minimum restriction. */
  public CcOffer setAgeMinimumDetails(String ageMinimumDetails) {
    this.ageMinimumDetails = ageMinimumDetails;
    return this;
  }
  /**
   * The dollar amount that will be charged per transfer.
   */
  @Key("balanceTransferFeeAmount")
  private Double balanceTransferFeeAmount;

  /** The dollar amount that will be charged per transfer. */
  public Double getBalanceTransferFeeAmount() {
    return balanceTransferFeeAmount;
  }

  /** The dollar amount that will be charged per transfer. */
  public CcOffer setBalanceTransferFeeAmount(Double balanceTransferFeeAmount) {
    this.balanceTransferFeeAmount = balanceTransferFeeAmount;
    return this;
  }
  /**
   * The end date for the introductory balance transfer period, for cards with an absolute date.
   */
  @Key("introBalanceTransferPeriodEndDate")
  private String introBalanceTransferPeriodEndDate;

  /** The end date for the introductory balance transfer period, for cards with an absolute date. */
  public String getIntroBalanceTransferPeriodEndDate() {
    return introBalanceTransferPeriodEndDate;
  }

  /** The end date for the introductory balance transfer period, for cards with an absolute date. */
  public CcOffer setIntroBalanceTransferPeriodEndDate(String introBalanceTransferPeriodEndDate) {
    this.introBalanceTransferPeriodEndDate = introBalanceTransferPeriodEndDate;
    return this;
  }


  private HttpHeaders responseHeaders;

  /**
   * Sets the HTTP headers returned with the server response, or <code>null</code>.
   *
   * This member should only be non-null if this object was the top level element of a response. For
   * example, a request that returns a single CcOffer would include the response headers, while a
   * request which returns an array of CcOffer, would have a non-null response header in the
   * enclosing object only.
   */
  public void setResponseHeaders(HttpHeaders responseHeaders) {
    this.responseHeaders = responseHeaders;
  }

  /**
   * Returns the HTTP headers that were returned with the server response, or
   * <code>null</code>.
   */
  public HttpHeaders getResponseHeaders() {
    return responseHeaders;
  }
}
